home *** CD-ROM | disk | FTP | other *** search
/ Amiga Games Extra 1996 September / Amiga Games Extra CD-ROM 9-1996.iso / userbox / publicdomain / dunderdir / sources / opt.e next >
Text File  |  1996-04-30  |  2KB  |  114 lines

  1. /*
  2.  * Opt © 1995 Jimmie Matsson, All Rights Reserved
  3.  *
  4.  *   Version  Date        Comment
  5.  *      1.00  03-Jul-95   First release
  6.  *      1.01  05-Jul-95   Made some small changes
  7.  *
  8.  * This source is Public Domain. That means you can
  9.  * do whatever you want to with it =)
  10.  *
  11.  */
  12.  
  13. MODULE 'dos/dos'
  14. MODULE 'dos/var'
  15.  
  16. ENUM OPTSOPT, REMOPT, LOCALOPT, GLOBALOPT
  17.  
  18. PROC main()
  19.     DEF rdargs, opts:PTR TO LONG, var[150]:STRING
  20.     DEF template[50]:STRING, version[50]:STRING
  21.  
  22.     StrCopy(version, '$VER: Opt 1.01 (05-Jul-95) © 1995 Jimmie Matsson')
  23.     StrCopy(template, 'OPTS=OPTIONS/A,REM=REMOVE/S,LOCAL/S,GLOBAL/S')
  24.     opts := [0,0,0,0]
  25.  
  26.     IF rdargs := ReadArgs(template, opts, NIL)
  27.         IF opts[LOCALOPT] <> 0 AND opts[GLOBALOPT] <> 0
  28.             WriteF('Make up your mind, LOCAL or GLOBAL?\n')
  29.             FreeArgs(rdargs)
  30.             CleanUp(RETURN_FAIL)
  31.         ENDIF
  32.  
  33.         IF (opts[GLOBALOPT] <> 0) OR ((GetVar('DDOpts', var, 150, GVF_LOCAL_ONLY)) < 0)
  34.             IF (GetVar('DDOpts', var, 150, GVF_GLOBAL_ONLY)) < 0
  35.                 WriteF('Can''t find the DDOpts variable, use "Set" or "SetEnv"\n')
  36.                 WriteF('to create it before using this command.\n')
  37.                 FreeArgs(rdargs)
  38.                 CleanUp(RETURN_FAIL)
  39.             ENDIF
  40.             opts[GLOBALOPT] := TRUE
  41.         ELSE
  42.             opts[LOCALOPT] := TRUE
  43.         ENDIF
  44.  
  45.         IF opts[REMOPT] = FALSE
  46. /* Add some options */
  47.                 MOVEA.L    var,A0
  48.                 MOVEA.L    opts,A1
  49.                 MOVEA.L    (A1),A1
  50. cte:            TST.B     (A0)+
  51.                 BNE.S        cte
  52.                 SUBQ.L    #1,A0
  53.                 BRA.S        cmp
  54. tst:            ADDQ.L    #1,A1
  55.                 TST.B        (A1)
  56.                 BEQ.S        fin
  57. cmp:            CMPI.B    #"-",(A1)
  58.                 BNE.S        not
  59.                 ADDQ.L    #1,A1
  60. not:            MOVE.B    #" ",(A0)+
  61.                 MOVE.B    #"-",(A0)+
  62. cs:            CMPI.B    #" ",(A1)
  63.                 BEQ.S        tst
  64.                 MOVE.B    (A1)+,(A0)+
  65.                 BNE.S        cs
  66.         ELSE
  67. /* Delete some options */
  68. start:        MOVEA.L    var,A0
  69. nxt:            MOVEA.L    opts,A1
  70.                 MOVEA.L    (A1),A1
  71. nxta1:        MOVE.B    (A1)+,D0
  72.                 BEQ.S        nxta0
  73.                 CMP.B        (A0),D0
  74.                 BNE.S        nxta1
  75.                 BRA.S        del
  76. nxta0:        ADDQ.L    #1,A0
  77.                 TST.B        (A0)
  78.                 BNE.S        nxt
  79.                 BRA.S        del2
  80. del:            MOVE.B    1(A0),(A0)+
  81.                 BNE.S        del
  82.                 BRA.S        start
  83.  
  84. /* This will delete all lonley "-" */
  85.  
  86. del2:            MOVEA.L    var,A0
  87. tstnxt:        TST.B        (A0)
  88.                 BEQ.S        fin
  89.                 CMPI.B    #"-",(A0)+
  90.                 BNE.S        tstnxt
  91.                 CMPI.B    #" ",(A0)
  92.                 BEQ.S        del3
  93.                 CMPI.B    #"-",(A0)
  94.                 BEQ.S        del3
  95.                 TST.B        (A0)
  96.                 BNE.S        tstnxt
  97.                 MOVE.B    (A0),-(A0)
  98.                 BRA.S        del2
  99. del3:            MOVE.B    1(A0),(A0)+
  100.                 BNE.S        del3
  101.                 BRA.S        del2
  102.         ENDIF
  103.  
  104. fin:
  105.         SetVar('DDOpts', var, -1, IF opts[LOCALOPT] THEN
  106.                       GVF_LOCAL_ONLY ELSE GVF_GLOBAL_ONLY)
  107.         FreeArgs(rdargs)
  108.     ELSE
  109.         PrintFault(IoErr(), NIL)
  110.         CleanUp(RETURN_FAIL)
  111.     ENDIF
  112. ENDPROC
  113.  
  114.